The present invention relates generally to information processing environments and, more particularly, to multimedia development tools which bind user-defined classes at runtime.
As computer processing power has increased, multimedia applications (e.g., applications including multiple media such as animation, audio clips, and the like) have become increasingly popular. As a result, development tools allowing moderately sophisticated developer/users to write such multimedia applications have appeared. Concurrently with the rise in multimedia has come an increase in the connectivity of computers to one another. For example, many computers are now connected to the Internet for access to Internet services such as the World Wide Web. In addition, relatively-limited computers known as "set top boxes" or "STBs" are available for connecting television sets to Interactive Television ("ITV") services.
ITV environments are typified by set top boxes, at individual customer sites (e.g., consumer home), connected via a broadband network to a central office. Such an environment is illustrated in FIG. 1 as Interactive Television (ITV) environment 100. The environment 100 includes a multitude of set top boxes (STBs) 110, such as set top box 101, connected via a high-bandwidth communication medium 120 (e.g., coax, fiber optic, and the like) to a central office 130. Each set top box itself is generally a small, economically-produced consumer unit which sets atop a television. Communication between the set top box and the central office is bi-directional. In general operation, the set top box 101 interacts with a television, such as television 103.
Through the set top box 101, the central office 130 can send streams of objects to customers, all upon specific requests by the customers. The term "objects," as used herein, encompasses not only classical "objects" with computational capability (e.g., C++ objects) but also non-computational objects, including data objects comprising video, pictures, audio, text, and other information. At the central office, one or more server computers (e.g., server 131) are employed for servicing the requests of each particular set top box. In particular, the servers "serve" information to the set top boxes, including information about the kind of services and features (e.g., videos) that the customer or user can receive on his or her TV. Services which the user might receive include, for instance, a travel service, a weather service, a home shopping service, a video rental service, and the like.
The set top box itself is a microcomputer in its own right and, thus, includes common microcomputer components, such as a microprocessor (e.g., Intel 486) and memory (e.g., random-access memory or "RAM"). Since set top boxes are generally geared to the mass consumer market, they must be produced economically. Accordingly, memory in such boxes is typically constrained, relative to what one would find in a desktop computer. Since these clients have a small amount of memory, a problem exists as to how one optimizes the use of local memory: specifically, what objects are brought into local memory and what objects are tossed out of local memory (e.g., during low memory conditions).
Multimedia applications for ITV services popularly take the form of on-demand video, on-demand audio, on-line games, shopping services, and so forth. Supporting the creation of such diverse programming content are object-oriented development tools. These tools allow developers to build multimedia applications from pre-existing "classes" of available objects. Common examples of predefined classes include those specifying application features, such as buttons and other user interface elements, as well as ones for audio clips, text, and the like. Here, a developer can combine specific "instances" of these various classes in interesting ways to form user-defined classes or "UDCs." Typically, one would create a new "subclass"--a class which inherits at least some characteristics and behavior from an existing class (e.g., one provided by a tools vendor). In this regard, the existing class is a "parent" class or "superclass"; the new class, on the other hand, is the "child" class or "subclass."
In conventional multimedia development environments, user-defined classes of a multimedia application are "bound" to the behaviors defined for the parent classes, from which they inherit, at the time when the application is first compiled. While this is the simplest approach for binding behavior to classes of objects, it unfortunately introduces some inflexibility into the application. Specifically, the approach limits the ability of one to modify characteristics or behavior of such application without rewriting and then recompiling the application. Suppose, for instance, one wants to change how an object draws itself--that is, make a core change to the draw method for the class from which that object is instantiated. With the prior art approach of binding behavior to objects at compile time, such a change is not feasible.
The problem is as follows. Typically, when a multimedia application is compiled, objects (i.e., instances of classes) have all their properties and behaviors included or bound to the compiled version of the application. Thus, the resulting executable binary form of the application includes in binary format all features of all objects that comprise the application. Changes to features at this point require one to return to the development environment and reauthor an appropriate portion of the underlying source code and then recompile the application (i.e., regenerate the application). This inflexibility becomes especially problematic with applications which are made available over the World Wide Web or over ITV systems, as these applications typically require frequent modification.
What is needed is a development environment implementing methods which allows users-developers to specify that certain features of the application--the properties and behaviors that define objects--can be modified readily at runtime. The present invention fulfills this and other needs.